<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>运算符</title>
  </head>
  <body>
    <script>
      //T1
      //3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？
      /*
      Answer:
        3 + 2 +"7" 结果是 57，为String类型
        3 + (2 + "7") 结果是 327，为String类型
      */

      //T2
      //6 - false的结果是什么？为什么
      /*
      Answer:
        6 - false 结果为 6。
        因为此表达式为算数运算，false隐式转换为数字0，然后再`6 - 0` 结果为 6

      */

      //T3
      //6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？
      /*
      Answer:
        6 - "false" 结果为 NaN(不是一个数字)，其为Number类型
        6 + "false" 结果为 6false(为字符串拼接)，其值为String类型
      */

      //T4
      //下面代码分别输出什么？请写出分析过程
      var a = 1;
      var b = ++a + ++a;
      /*
      var a = 1;              //
      var b = ++a + ++a;      // b = 5, ++a = 2, ++a = 3
      
      Answer:
        首先a = 1，其次第1个`++a` => `a = 2`，则第2个`++a` => `a = 3`，最后 b = 2 + 3 
      */

      //T5
      //JS中哪些值通过Boolean对象转换出来的值为false
      /*
      Answer:
        ''、null、undefined、0、NaN
      */

      //T6
      //分析下面代码，写出分析过程，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)
      var i = 100;
      i++;
      j = i++;
      y = ++j;
      console.log(y);
      console.log(j);
      /* 
      Answer: 
        j 和 y 分别为 102 和 102。

      var i = 100;      // i = 100
      i++;              // i++ = 101
      j = i++;          // i++ = 102, j = 101
      y = ++j;          // ++j = 102, y = 102
      console.log(y);   // y = 102
      console.log(j);   // j = 102
      */
    </script>
  </body>
</html>
